﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyScaner
{
    class Program
    {
        static void Main(string[] args)
        {
            string code = "using System;using System.Collections.Generic;using System.Linq;using System.Text;/*  * Scaner for c# language by Kavai */namespace MyScaner{    enum KIND    {        UNKNOWN = -1,        ABSTRACT,        AS,        ASSIGN,        ASSIGN_DIV,        ASSIGN_MULT,        ASSIGN_SUB,        ASSIGN_SUMM,        BASE,        BOOL,        BREAK,        BYTE,        CASE,        CATCH,        CHAR,        CHAR_KEYWORD,        CHECKED,        CLASS,        COMMENT,        CONST,        CONTINUE,        DECIMAL,        DECREMENT,        DEFAULT,        DELEGATE,        DENIAL,        DIGIT,        DIVISION,        DO,        DOUBLE,        ELSE,        ENUM,        EQUAL,        ESC_SEQ,        EVENT,        EXPLICIT,        EXTERN,        FALSE,        FINALLY,        FIXED,        FLOAT,        FOR,        FOREACH,        GOTO,        HEX_DIGIT,        IDENTIFIER,        IF,        IMPLICIT,        IN,        INCREMENT,        INT,        INTERFACE,        INTERNAL,        IS,        LEFT_BRACE,        LEFT_BRACKET,        LESS,        LESS_EQUAL,        LOCK,        LONG,        MORE,        MORE_EQUAL,        MULTIPLICATION,        NAMESPACE,        NEW,        NOT_EQUAL,        NULL,        OBJECT,        OCTAL_ESC,        OPERATOR,        OUT,        OVERRIDE,        PARAMS,        POINT,        PRIVATE,        PROTECTED,        PUBLIC,        READONLY,        REF,        RETURN,        RIGHT_BRACE,        RIGHT_BRACKET,        SBYTE,        SEALED,        SEMICOLON,        SHORT,        SIZEOF,        STACKALLOC,        STATIC,        STRING,        STRING_COMMENT,        STRING_KEYWORD,        STRUCT,        SUBTRACTION,        SUMM,        SWITCH,        THIS,        THROW,        TRUE,        TRY,        TYPEOF,        UINT,        ULONG,        UNCHECKED,        UNICODE_ESC,        UNSAFE,        USHORT,        USING,        VIRTUAL,        VOID,        VOLATILE,        WHILE,        EOS    }    class Token    {        public string _val { get; set; }        public KIND _kind { get; set; }        public Token(KIND kind, string val)        {            _kind = kind;            _val = val;        }        public override string ToString()        {            return _kind.ToString();        }    }}";
            Scaner scaner = new Scaner(code);
            Token token = scaner.Next();
            while (token._kind != KIND.EOS)
            {
                Console.WriteLine("{0}|{1}", token.ToString(), token._val);
                token = scaner.Next();
            }
        }
    }
}
